//给你一个整数 n，请你判断该整数是否是 2 的幂次方。如果是，返回 true ；否则，返回 false 。
//如果存在一个整数 x 使得 n == 2x ，则认为 n 是 2 的幂次方。
#include <stdio.h>
#include <stdbool.h>

bool isPowerOfTwo(int n) 
{

    // if(n == 1)
    // return true;
    // if(n < 1)
    // return false;
    // if(n%2 == 0)
    // {
    //      return isPowerOfTwo(n/2);
    // }
    // else
    // {
    //      return false;
    // }

    //二进制表示法
    return n > 0 && (n & (n - 1)) == 0;
    //该位运算技巧可以直接将 n 二进制表示的最低位 1 移除
}





int main()
{
    int n = 3;
    printf("%d\n",isPowerOfTwo(n));
}